package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

import negocio.HoraCargadas;

import controlador.Utils;


public class AdmPersistenciaHoras {
	private static AdmPersistenciaHoras instancia;
	
	public static AdmPersistenciaHoras getInstancia(){
		if(instancia == null)
			return new AdmPersistenciaHoras();
		return instancia;
	}

	public Vector <HoraCargadas> getHrTarea(long idTarea) {
		System.out.println("LOG: AdmPersistenciaHoras / getHrTarea [INICIO]");
		Vector <HoraCargadas> horas = new Vector<HoraCargadas>();
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select * from horas where id_tar = ?");
			ps.setLong(1,idTarea);
			ResultSet rs = ps.executeQuery();
			HoraCargadas hc;
			while(rs.next()){
				hc = new HoraCargadas();
				hc.setId_Tarea(idTarea);
				hc.setCantHoras(rs.getInt(3));
				hc.setFecha(rs.getDate(4));
				horas.add(hc);
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaHoras / getHrTarea [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return horas;
	}

	public void insert(HoraCargadas horaCargadas) {
		System.out.println("LOG: AdmPersistenciaHoras / insert [INICIO]");
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("insert into horas values (?,?,?,?)");
			ps.setLong(1,Utils.getIdHora());
			ps.setLong(2, horaCargadas.getId_Tarea());
			ps.setInt(3,horaCargadas.getCantHoras());
			ps.setDate(4, horaCargadas.getFecha());
			ps.execute();
			con.close();
			System.out.println("LOG: AdmPersistenciaHoras / insert [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
	}

	public static long generarId() {
		System.out.println("LOG: AdmPersistenciaHoras / generarId [INICIO]");
		try{
			
			Connection con = ConectorSQL.conectar();  
			PreparedStatement ps = con.prepareStatement("select MAX(id_hor) from horas");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				return rs.getInt(1) + 1;
			}
			con.close();
			System.out.println("LOG: AdmPersistenciaHoras / generarId [FIN]");
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
		return -1;
	}
	
	
}
